package com.mobile.service.dto.base;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.JsonDeserializer;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

// 自定义反序列化器：处理异常格式的数组
public class StringListDeserializer extends JsonDeserializer<List<String>> {
    private static final Pattern PATTERN = Pattern.compile("\"([^\"]+)\"");

    @Override
    public List<String> deserialize(JsonParser p, DeserializationContext ctxt) throws IOException {
        List<String> result = new ArrayList<>();
        String rawValue = p.getValueAsString(); // 前端传递的原始字符串（可能是"[\"32-1\", \"32-2\"]"）

        if (rawValue == null || rawValue.trim().isEmpty()) {
            return result;
        }

        // 去除前后的中括号
        String trimed = rawValue.replaceAll("^\\[|\\]$", "").trim();
        // 按逗号分割元素（处理可能的空格）
        String[] items = trimed.split("\\s*,\\s*");

        for (String item : items) {
            // 提取双引号内的内容
            Matcher matcher = PATTERN.matcher(item);
            if (matcher.find()) {
                result.add(matcher.group(1));
            } else {
                result.add(item);
            }
        }
        return result;
    }
}